﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TicketsPhone.Domain.Entities;
using TicketsPhone.Domain.Access;

namespace TicketsPhone.Domain.Access
{
    public class AlertaRepositorio : ConexionSql<Alerta>
    {
        /// <summary>
        /// Retorna un listado de alertas que no han sido enviadas
        /// </summary>
        /// <param name="top">Numero de alertas a enviar</param>
        /// <returns>Listado de alertas pendientes</returns>
        public List<Alerta> ObtenerAlertasPendientes(int top)
        {
            List<Alerta> lista = new List<Alerta>();
            
            CrearComando("spAlerta_ObtenerAlertasPendientes");
            AgregarParametro("@top", top, System.Data.ParameterDirection.Input, System.Data.DbType.Int32);
            ExecuteReader();
            
            while (Read())
            {
                Alerta obj = new Alerta();
                obj.Celular = GetStringValue("Celular");
                obj.Mensaje = GetStringValue("Mensaje");
                obj.IdAlerta = GetIntValue("IdAlerta");
                lista.Add(obj);
            }

            return lista;
        }

        /// <summary>
        /// Crea una nueva alerta pendiente para ser enviada
        /// </summary>
        /// <param name="idTurno"></param>
        /// <param name="mensaje"></param>
        public void Crear(int idTurno, string mensaje)
        {
            CrearComando("spAlerta_Crear");
            AgregarParametro("@idTurno", idTurno, System.Data.ParameterDirection.Input, System.Data.DbType.Int32);
            AgregarParametro("@mensaje", mensaje, System.Data.ParameterDirection.Input, System.Data.DbType.String);
            AgregarParametro("@fueEnviado", false, System.Data.ParameterDirection.Input, System.Data.DbType.Boolean);
            ExecuteNonQuery();
        }


        public void MarcarComoEnviado(int idAlerta)
        {
            CrearComando("spAlerta_MarcarComoEnviado");
            AgregarParametro("@idAlerta", idAlerta, System.Data.ParameterDirection.Input, System.Data.DbType.Int32);
            ExecuteNonQuery();
        }
    }
}
